0 REM 90 PRINT"[147][152]":POKE53280,2:POKE53281,15 92 PRINT" DISK CHECKER 93 [153]" GIVES DISK A GOOD CHECK FOR - START LINKS 94 PRINT" COMPARES FILE LENGTH TO DIR FILE LENGTH 95 [153]" FILES OVERLAPPING ACTUAL BLOCKS FREE 96 PRINT" PUT DISK TO BE CHECKED IN DRIVE PRESS TO CHECK[152] 97 [161]G$:[139]G$[179][177]" "[167]97 100 [137]280 110 [143] INNER TRACE LOOP 120 [152]1,"U1 2 0";T;S 130 [132]1,EN,EM$,ET,ES 140 [139]EN[179][177]0[167]1960:[143] DISK TRACE ERROR 150 LT%(I)[178]LT%(I)[170]1 160 [139]OB%(T,S)[179][177]0[167]1410:[143] FILE INTERSECT 170 OB%(T,S)[178]I 180 [161]#2,A$,B$ 190 [139]A$[178]""[167]1450:[143] TRACE LOOP CONTINUE 200 [139]B$[178]""[167]B$[178][199](0) 210 T[178][198](A$):S[178][198](B$) 220 [137]120:[143] INNER TRACE LOOP 230 [143]******************************* 240 [143]DISK CHECKER 250 [143] 260 [143]DON FULTON 270 [143]******************************* 280 [134]I,S,T,X,Y,Z 290 [134]BC,EN,ES,ET,IM,LC,OF,PF,S1,S2,SF,T1,T2 300 [134]TS%(144),SS%(144),LD%(144),LT%(144),PF%(144),N$(144) 310 [134]OB%(35,20) 320 [160]1:[159]1,8,15:[160]2:[160]1 330 [143]------------------------------- 340 [153]"LOAD" 350 [153] 360 [153]" DISK CHECKER 370 PRINT" [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163] 380 [153]" CHECKS: 390 PRINT 400 PRINT" -- START LINKS DIFFERENT 410 [153] 420 [153]" -- TRACE FILE LEN = DIR FILE LEN 430 PRINT 440 PRINT" -- FILES DO NOT OVERLAP 450 [153] 460 [153]" -- BLOCKS FREE 470 PRINT 550 PRINT" [207][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][208] 560 [153]" FNTHIS UTILITY DOES NOT WRITE TO DISK.THEN 570 PRINT" [165] [167] 580 [153]" FN (PROBLEM FILES ARE DISPLAYED)WAIT THEN 590 PRINT" [165] IN INVERSE VIDEO)[146] [167] 600 [153]" (null)ANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDANDSQR 610 FORX=1TO1000:NEXT 620 PRINT 630 REM------------------------------- 640 REM FIND START OF ACTIVE FILES 650 PRINT 660 PRINT" START LENGTH " 670 PRINT"FILE T , S FILE NAME DIR--TRACE" 680 PRINT"[163][163][163][163] [163][163][163][163][163] [163][163][163][163][163][163][163][163][163][163][163] [163][163][163] [163][163][163][163][163]" 690 OPEN1,8,15 700 OPEN2,8,2,"#" 710 T1=18:S1=1:I=1 720 REM NEXT DIRECTORY SECTOR 730 :IFT1=0THEN1010:REM DIRECTORY CLOSE 740 :PRINT#1,"U1 2 0";T1;S1 750 :INPUT#1,EN,EM$,ET,ES 760 :IFEN<>0THEN1980:REM DISK ERROR 770 :GET#2,A$,B$ 780 :T2=T1:S2=S1 790 :T1=ASC(A$+CHR$(0)) 800 :S1=ASC(B$+CHR$(0)) 810 :FORX=2TO255STEP32 820 :PRINT#1,"U1 2 0";T2;S2 830 :PRINT#1,"B-P 2";X 840 :INPUT#1,EN,EM$,ET,ES 850 :IFEN<>0THEN1980:REM DISK ERROR 860 :GET#2,C$,D$,E$,F$,G$,H$,I$,J$,K$,L$,M$,N$,O$,P$,Q$,R$,S$,T$,U$ 870 :IFC$=""THEN980:REM DIRECTORY CONTINUE 880 :TS%(I)=ASC(D$+CHR$(0)) 890 :SS%(I)=ASC(E$+CHR$(0)) 900 :N$(I)=F$+G$+H$+I$+J$+K$+L$+M$+N$+O$+P$+Q$+R$+S$+T$+U$ 910 :PRINT#1,"B-P 2";X+28 920 :GET#2,V$,W$ 930 :LD%(I)=ASC(V$+CHR$(0))+256*ASC(W$+CHR$(0)) 940 :PRINTI;TAB(4)TS%(I);TAB(8)",";TAB(9)SS%(I); 950 :PRINTTAB(13)N$(I);TAB(29)LD%(I);TAB(33);"--";LT%(I) 960 :I=I+1 970 :REM DIRECTORY CONTINUE 980 :NEXT 990 GOTO730:REM NEXT DIRECTORY SECTOR 1000 REM DIRECTORY CLOSE 1010 IM=I-1 1020 CLOSE2:CLOSE1 1030 REM------------------------------ 1040 PRINT 1050 PRINT" CHECKING START LINKS FOR OVERLAP" 1060 PRINT 1070 IFIM=0ORIM=1THEN1250:REM START]LINK END 1080 FORI=2TOIM 1090 :FORY=1TOI-1 1100 :IFTS%(Y)=TS%(I)THENIFSS%(Y)=SS%(I)THEN1150:REM FILE OVERLAP 1110 :NEXT 1120 NEXT 1130 GOTO1250:REM START LINKEND 1140 REM FILE OVERLAP 1150 :PF%(I)=1:PF%(Y)=1 1160 :OF=1:REM SET]OVERLAP FLAG 1170 :PRINTY;CHR$(18);TAB(4)TS%(Y);TAB(8)","; 1180 :PRINTTAB(9)SS%(Y);TAB(13)N$(Y);CHR$(146); 1190 :PRINTTAB(29)LD%(Y);TAB(33);"--";LT%(Y) 1200 :PRINTI;CHR$(18);TAB(4)TS%(I);TAB(8)","; 1210 :PRINTTAB(9)SS%(I);TAB(13)N$(I);CHR$(146); 1220 :PRINTTAB(29)LD%(I);TAB(33);"--";LT%(I) 1230 GOTO1110:REM START LINK CONTINUE 1240 REM START LINK END 1250 IFOF=0THENPRINT" --START LINKS OK--" 1260 REM----------------------------- 1270 PRINT 1280 PRINT" TRACING FILES" 1290 PRINT 1300 OPEN1,8,15 1310 OPEN2,8,2,"#" 1320 IFIM=0THEN1530:REM TRACE END 1330 FORI=1TOIM 1340 :T=TS%(I) 1350 :S=SS%(I) 1360 :LT%(I)=0 1370 :PF$="" 1380 :SF=0 1390 :GOTO120:REM INNER TRACE LOOP 1400 :REMFILEINTERSECT 1410 :PF%(OB%(T,S))=1 1420 :PF%(I)=1 1430 :SF=1:REM SET INTERSECT FLAG 1440 :REM TRACE LOOP CONTINUE 1450 :BC=BC+LT%(I) 1460 :PRINTI;TAB(4)TS%(I);TAB(8)",";TAB(9)SS%(I); 1470 :IFLT%(I)<>LD%(I)THENPF%(I)=PF%(I)+2:PRINT"[150]";:GOSUB2060 1480 :PRINTTAB(13)N$(I);TAB(29)"[152]"LD%(I);TAB(33);"--";LT%(I):GOSUB2050 1490 :IFPF$<>""THENPRINT" (FILE";I;"CONTAINS ";+PF$;")":PRINT 1500 :IFSF=1THENPRINT" (FILE";I;"INTERSECTS FILE ";OB%(T,S);")":PRINT 1510 NEXT 1520 REM TRACE END 1530 CLOSE2:CLOSE1 1540 REM------------------------------ 1550 PRINT 1560 PRINT" PROBLEM FILES--" 1570 PRINT" [163][163][163][163][163][163][163][163][163][163][163][163][163]" 1580 IFIM=0THEN1710:REM PROBLEM FILE END 1590 FORI=1TOIM 1600 :IFPF%(I)=0THEN1690:REM PROBLEM LOOP CONTINUE 1610 :PF=1:REM SET PROBLEM FILE FLAG 1620 :PRINTI; 1630 :IFPF%(I)=1ORPF%(I)=3THENPRINTCHR$(18); 1640 :PRINTTAB(4)TS%(I);TAB(8)",";TAB(9)SS%(I); 1650 :PRINTCHR$(18);TAB(13)N$(I);CHR$(146); 1660 :IFPF%(I)=2ORPF%(I)=3THENPRINTCHR$(18); 1670 :PRINTTAB(29)LD%(I);TAB(33);"--";LT%(I) 1680 :REM PROBLEM LOOP CONTINUE 1690 NEXT 1700 REM PROBLEM FILE END 1710 IFPF=0THENPRINT" NONE" 1720 PRINT 1730 PRINT" BLOCK COUNT = ";BC 1740 PRINT 1750 PRINT" BLOCKS FREE = ";664-BC;TAB(20)"(TRACE)" 1760 FORI=0TOIM 1770 :LC=LC+LD%(I) 1780 NEXT 1790 PRINT" BLOCKS FREE = ";664-LC;TAB(20)"(DIR)" 1800 REM------------------------------ 1810 REM DIR BAM BLOCKS FREE 1820 OPEN1,8,15 1830 OPEN2,8,2,"#" 1840 PRINT#1,"U1 2 0";18;0 1850 INPUT#1,EN,EM$,ET,ES 1860 IFEN<>0THEN1980:REM DISK ERROR 1870 FORX=0TO35 1880 :GET#2,W$,X$,Y$,Z$ 1890 :IFX<>0ANDX<>18THENBU=BU+ASC(W$+CHR$(0)) 1900 NEXT 1910 PRINT" BLOCKS FREE = ";BU;TAB(20)"(BAM)" 1920 CLOSE2:CLOSE1 1930 END 1940 REM------------------------------ 1950 REM DISK TRACE ERROR 1960 IFEN=66THENPF$="ILLEGAL LINK":GOTO1450:REM TRACE LOOP CONTINUE 1970 REM DISK ERROR 1980 PRINT 1990 PRINT" UNRECOVERABLE DISK ERROR" 2000 PRINT 2010 PRINTEN;EM$;ET;ES 2020 CLOSE2:CLOSE1 2030 END 2050 FORTU=20TO0STEP-.9:POKE54296,TU:POKE54296,0:NEXT:RETURN 2060 FORTU=78TO0STEP-.9:POKE54296,TU:POKE54296,0:NEXT:RETURN